package dbExec

//
//import (
//	"fmt"
//	mysql "db2s/MySQL"
//	oracle "db2s/Oracle"
//	"db2s/cluster"
//	"db2s/global"
//	"db2s/outPut"
//	"os"
//	"strings"
//	"sync"
//)
//

//
//type AppTableS struct {
//	//DB                 map[string]*sql.DB `json:"db"`
//	AppType            string `json:"appType"`
//	ShardName          string `json:"shardName"`
//	LobSwitch          bool   `json:"lobSwitch"`
//	IgnoreColumnLength bool   `json:"ignoreColumnLength"`
//	Esa                global.EncryptionProperties
//}
//type FullRowsCheckS struct {
//	WriteTextI outPut.Result `json:"writeTextI"`
//}
//type DataAbnormalFixStruct struct {
//	Schema          string              `json:"schema"`
//	Table           string              `json:"table"`
//	RowData         string              `json:"rowData"`
//	SourceDevice    string              `json:"sourceDevice"`
//	DestDevice      string              `json:"destDevice"`
//	Sqlwhere        string              `json:"sqlwhere"`
//	IndexColumnType string              `json:"IcolumnType"`
//	ColData         []map[string]string `json:"fullColumn"`
//	IndexType       string              `json:"indexType"`
//	IndexColumn     []string            `json:"indexColumn"`
//	DataFixType     string              `json:"datafixType"`
//	FixFileAlterF   *os.File            `json:"dataFixAlterF"`
//	QuerySource     string
//	DBType          string
//	LogSeq          int64          `json:"logSeq"`
//	AppTable        AppTableS      `json:"appTable"`
//	FullRowsc       FullRowsCheckS `json:"fullRowsc"`
//	SqlMode         bool
//}
//
//type DataAbnormalFixInterface interface {
//	GeneralInsertPerfixSql(s global.GeneralInsertPerfixSqlP) (insertPrefix string)
//	FixInsertSqlExec(RowData string, ColData []map[string]string, logThreadSeq int64) (string, error)
//	FixDeleteSqlExec(RowData string, colData []map[string]string, IndexType string, IndexColumn []string, logThreadSeq int64) (string, error)
//	FixAlterIndexSqlExec(indexName any, alterType string, si map[string][]string, logThreadSeq int64) []string
//	ApplySql(s global.ApplySqlP) error
//}
//
//func (dafs DataAbnormalFixStruct) DataAbnormalFix() DataAbnormalFixInterface {
//	var tqaci DataAbnormalFixInterface
//	return tqaci
//}
//func ApplyDataFix(dafs DataAbnormalFixStruct) (tqaci DataAbnormalFixInterface) {
//	if strings.EqualFold(dafs.DBType, "mysql") {
//		tqaci = &mysql.MdataFixS{
//			Schema:          dafs.Schema,
//			Table:           dafs.Table,
//			Sqlwhere:        dafs.Sqlwhere,
//			RowData:         dafs.RowData,
//			SourceDevice:    dafs.SourceDevice,
//			IndexColumnType: dafs.IndexColumnType,
//			DataFixType:     dafs.DataFixType,
//			ColData:         dafs.ColData,
//			IndexType:       dafs.IndexType,
//			IndexColumn:     dafs.IndexColumn,
//			FixFileAlterF:   dafs.FixFileAlterF,
//			FullRowsc:       mysql.FullRowsCheckS(dafs.FullRowsc),
//			SqlMode:         dafs.SqlMode,
//			AppTable: mysql.AppTableS{AppType: dafs.AppTable.AppType, ShardName: dafs.AppTable.ShardName, LobSwitch: dafs.AppTable.LobSwitch,
//				IgnoreColumnLength: dafs.AppTable.IgnoreColumnLength, Esa: dafs.AppTable.Esa},
//		}
//	}
//	if strings.EqualFold(dafs.DBType, "oracle") {
//		tqaci = &oracle.OdataFixS{
//			Schema:          dafs.Schema,
//			Table:           dafs.Table,
//			Sqlwhere:        dafs.Sqlwhere,
//			RowData:         dafs.RowData,
//			SourceDevice:    dafs.SourceDevice,
//			IndexColumnType: dafs.IndexColumnType,
//			ColData:         dafs.ColData,
//			IndexType:       dafs.IndexType,
//			IndexColumn:     dafs.IndexColumn,
//			DataFixType:     dafs.DataFixType,
//			FixFileAlterF:   dafs.FixFileAlterF,
//			FullRowsc:       oracle.FullRowsCheckS(dafs.FullRowsc),
//			AppTable: oracle.AppTableS{AppType: dafs.AppTable.AppType, ShardName: dafs.AppTable.ShardName,
//				LobSwitch: dafs.AppTable.LobSwitch, IgnoreColumnLength: dafs.AppTable.IgnoreColumnLength, Esa: dafs.AppTable.Esa},
//		}
//	}
//	if strings.EqualFold(dafs.DBType, "cluster") {
//		tqaci = &cluster.CdataFixS{
//			Schema:          dafs.Schema,
//			Table:           dafs.Table,
//			Sqlwhere:        dafs.Sqlwhere,
//			RowData:         dafs.RowData,
//			SourceDevice:    dafs.SourceDevice,
//			IndexColumnType: dafs.IndexColumnType,
//			DataFixType:     dafs.DataFixType,
//			ColData:         dafs.ColData,
//			IndexType:       dafs.IndexType,
//			IndexColumn:     dafs.IndexColumn,
//			FixFileAlterF:   dafs.FixFileAlterF,
//			FullRowsc:       cluster.FullRowsCheckS(dafs.FullRowsc),
//			SqlMode:         dafs.SqlMode,
//			AppTable: cluster.AppTableS{AppType: dafs.AppTable.AppType, ShardName: dafs.AppTable.ShardName, LobSwitch: dafs.AppTable.LobSwitch,
//				IgnoreColumnLength: dafs.AppTable.IgnoreColumnLength, Esa: dafs.AppTable.Esa},
//		}
//	}
//	return
//}
//
//type SqlPrefixEr interface {
//	Prefix(s any) (any, error)
//}
//type DmlSqlEr interface {
//	Insert(s any) (any, error)
//	Delete(s any) (any, error)
//}
//type DdlSqlEr interface {
//	Alter(s any) (any, error)
//}
//type GeneralSqlEr interface {
//	SqlPrefixEr
//	DmlSqlEr
//	DdlSqlEr
//}
//type TableAnalyzeEr interface {
//	Analyze(s any) (any, error)
//}
//type ApplyEr interface {
//	DmlSqlEr
//	WriteEr
//	TableAnalyzeEr
//}
//type WriteEr interface {
//	DmlSql(s any) (any, error)
//	DdlSql(s any) (any, error)
//}
//type DataFixEr interface {
//	GeneralSqlEr
//	ApplyEr
//	WriteEr
//}
//
//func General(s global.GeneralSql) GeneralSqlEr {
//	var d GeneralSqlEr
//	switch fmt.Sprintf("%v", strings.ToLower(s.DBtype)) {
//	case "mysql":
//		d = &mysql.GeneralSql{
//			Schema:             s.Schema,
//			Table:              s.Table,
//			IgnoreColumnLength: s.IgnoreColumnLength,
//			IndexType:          s.IndexType,
//			IndexColumn:        s.IndexColumn,
//			IndexName:          s.IndexName,
//			LobSwitch:          s.LobSwitch,
//			Esa:                s.Esa,
//		}
//	case "oracle":
//		d = &oracle.GeneralSql{
//			Schema:             s.Schema,
//			Table:              s.Table,
//			IgnoreColumnLength: s.IgnoreColumnLength,
//			IndexType:          s.IndexType,
//			IndexColumn:        s.IndexColumn,
//			IndexName:          s.IndexName,
//			LobSwitch:          s.LobSwitch,
//			Esa:                s.Esa,
//		}
//	case "cluster":
//		d = &cluster.GeneralSql{
//			Schema:             s.Schema,
//			Table:              s.Table,
//			IgnoreColumnLength: s.IgnoreColumnLength,
//			IndexType:          s.IndexType,
//			IndexColumn:        s.IndexColumn,
//			IndexName:          s.IndexName,
//			LobSwitch:          s.LobSwitch,
//			Esa:                s.Esa,
//		}
//	}
//	return d
//}
//func Apply(s global.ApplySql) ApplyEr {
//	var d ApplyEr
//	switch fmt.Sprintf("%v", strings.ToLower(s.DBtype)) {
//	case "mysql":
//		d = &mysql.ApplySql{
//			Schema:     s.Schema,
//			Table:      s.Table,
//			DB:         s.DB,
//			LobSwitch:  s.LobSwitch,
//			WriteTextI: s.WriteTextI,
//			SqlMode:    s.SqlMode,
//			SqlLogBin:  s.SqlLogBin,
//		}
//	case "oracle":
//		d = &oracle.ApplySql{
//			Schema:     s.Schema,
//			Table:      s.Table,
//			DB:         s.DB,
//			LobSwitch:  s.LobSwitch,
//			WriteTextI: s.WriteTextI,
//			SqlMode:    s.SqlMode,
//			SqlLogBin:  s.SqlLogBin,
//		}
//	case "cluster":
//		d = &cluster.ApplySql{
//			Schema:     s.Schema,
//			Table:      s.Table,
//			DB:         s.DB,
//			LobSwitch:  s.LobSwitch,
//			WriteTextI: s.WriteTextI,
//			SqlMode:    s.SqlMode,
//			SqlLogBin:  s.SqlLogBin,
//		}
//	}
//	return d
//}
